Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测) 您所在的位置:网站首页 openpose python 使用 Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)

Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)

2024-06-18 14:46| 来源: 网络整理| 查看: 265

在Python中,我们可以使用OpenCV和OpenPose库来实现人体姿态估计,也称为人体关键点检测。首先,我们需要安装这些库。如果你还没有安装,可以通过pip来安装:

pip install opencv-pythonpip install openpose

接下来,我们将通过一个简单的示例来展示如何使用这些库进行人体姿态估计。这个示例将使用OpenPose库来检测人体的21个关键点,包括头部、颈部、肩膀、肘部、手腕等。

首先,我们需要导入必要的库:

import cv2import numpy as npimport openpose as op

然后,我们可以创建一个OpenPose对象,并设置一些参数:

# 创建OpenPose对象op_model = op.Model(model_folder='/path/to/openpose', model_format='caffemodel', use_gpu=True)# 设置图像大小和关键点数量image_size = (640, 480)num_keypoints = 21

接下来,我们可以加载一张图像,并使用OpenPose来检测人体的关键点:

# 加载图像image = cv2.imread('path/to/image.jpg')image = cv2.resize(image, image_size)image = np.transpose(image, [2, 0, 1]) # OpenPose需要通道在最后一个维度上# 使用OpenPose进行人体姿态估计outputs = op_model.predict(image)keypoints = outputs['keypoints'] # 获取关键点坐标

现在,我们可以将检测到的关键点绘制在图像上:

# 将关键点坐标转换为图像上的像素坐标keypoints = np.transpose(keypoints, [1, 0]) # OpenPose返回的keypoints的形状是[num_keypoints, 3],需要转换为[3, num_keypoints]才能直接用于cv2.circle()函数绘制圆点。keypoints = keypoints * np.array(image_size) + (image_size[0] / 2, image_size[1] / 2) # 将关键点坐标转换到图像中心。由于OpenPose的关键点坐标是基于原图的,需要加上图像中心作为偏移量。keypoints = keypoints.astype(int) # 将浮点数坐标转换为整数坐标。cv2.circle()函数只接受整数坐标。# 在图像上绘制关键点for i in range(num_keypoints): cv2.circle(image, (keypoints[i, 0], keypoints[i, 1]), 5, (0, 255, 0), -1) # 在图像上绘制关键点,半径为5的圆形,颜色为绿色。-1表示填充圆形。

最后,我们可以显示图像:

```python

显示图像

cv2.imshow(‘image’, image)cv2.waitKey(0) # 按任意键关闭窗口cv2.destroyAllWindows() # 销毁所有窗口



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有